/*
 * @Author: 麦冬果果
 * @Date: 2021-09-06 11:10:02
 * @LastEditTime: 2021-09-06 17:27:05
 * @LastEditors: 麦冬果果
 * @Description: appApi结构体
 * @FilePath: /svc/src/app/define/appApi.go
 * 可以输入预定的版权声明、个性签名、空行等
 */
package define

import "github.com/gogf/gf/os/gtime"

type AppApiTableColumn struct {
	ColumnId      int64       `orm:"column_id,primary" json:"columnId"`      // 编号
	TableId       string      `orm:"table_id"          json:"tableId"`       // 归属表编号
	ColumnName    string      `orm:"column_name"       json:"columnName"`    // 列名称
	ColumnComment string      `orm:"column_comment"    json:"columnComment"` // 列描述
	ColumnType    string      `orm:"column_type"       json:"columnType"`    // 列类型
	GoType        string      `orm:"go_type"           json:"goType"`        // go类型
	GoField       string      `orm:"go_field"          json:"goField"`       // go字段名
	HtmlField     string      `orm:"html_field"        json:"htmlField"`     // html字段名
	IsPk          string      `orm:"is_pk"             json:"isPk"`          // 是否主键（1是）
	IsIncrement   string      `orm:"is_increment"      json:"isIncrement"`   // 是否自增（1是）
	IsRequired    string      `orm:"is_required"       json:"isRequired"`    // 是否必填（1是）
	IsInsert      string      `orm:"is_insert"         json:"isInsert"`      // 是否为插入字段（1是）
	IsEdit        string      `orm:"is_edit"           json:"isEdit"`        // 是否编辑字段（1是）
	IsList        string      `orm:"is_list"           json:"isList"`        // 是否列表字段（1是）
	IsQuery       string      `orm:"is_query"          json:"isQuery"`       // 是否查询字段（1是）
	QueryType     string      `orm:"query_type"        json:"queryType"`     // 查询方式（等于、不等于、大于、小于、范围）
	HtmlType      string      `orm:"html_type"         json:"htmlType"`      // 显示类型（文本框、文本域、下拉框、复选框、单选框、日期控件）
	DictType      string      `orm:"dict_type"         json:"dictType"`      // 字典类型
	Sort          int         `orm:"sort"              json:"sort"`          // 排序
	CreatedBy     string      `orm:"created_by"        json:"createdBy"`     // 创建者
	CreatedAt     *gtime.Time `orm:"created_at"        json:"createdAt"`     // 创建时间
	UpdatedBy     string      `orm:"updated_by"        json:"updatedBy"`     // 更新者
	UpdatedAt     *gtime.Time `orm:"updated_at"        json:"updatedAt"`     // 更新时间
}

type AppApiCommonReq struct {
	Status    string `p:"status" `
	Aname     string `p:"aname" `
	Gname     string `p:"gname" ` //
	Cname     string `p:"cname" ` //
	Ename     string `p:"ename" ` //v:"required#英文名称不能为空"
	Method    string `p:"method" `
	TableName string `p:"tableName"`
	HookWay   string ` p:"hookWay"`  // 钩子方式
	HookName  string ` p:"hookName"` // 钩子名称
	Remark    string `p:"remark"`    // 说明
}
type AppApiAddReq struct {
	AppApiCommonReq
	CreatedBy uint64 `p:"createdBy" `
}
type AppApiEditReq struct {
	Id uint ` p:"id"`
	AppApiCommonReq
	CreatedBy uint64 `p:"createdBy" `
}
type AppApiReq struct {
	Id        uint64 ` p:"id"`        // ID
	Cname     string ` p:"cname"`     // 中文名称
	Status    string ` p:"status"`    // 接口状态
	Aname     string ` p:"aname"`     // 应用名称
	Gname     string ` p:"gname"`     // 应用组名称
	Ename     string ` p:"ename"`     // 英文名称
	Method    string ` p:"method"`    // 调用方法
	TableName string ` p:"tableName"` // 调用主表名
	TableJoin string ` p:"tableJoin"` // 关联表
	WhereBy   string ` p:"whereBy"`   // 条件
	OrderBy   string ` p:"orderBy"`   // 排序
	GroupBy   string ` p:"groupBy"`   // 分组
	FieldBy   string ` p:"fieldBy"`   // 字段
	HookWay   string ` p:"hookWay"`   // 钩子方式
	HookName  string ` p:"hookName"`  // 钩子名称
	CreatedBy uint64 ` p:"createdBy"` // 创建人
	UpdatedBy uint64 ` p:"updatedBy"` // 修改人
	Remark    string ` p:"remark"`    // 说明
}
type AppApiPageReq struct {
	Status    string `p:"status"`    //接口状态
	Aname     string `p:"aname"`     //应用名称
	Gname     string `p:"gname"`     //应用组名称
	Cname     string `p:"cname"`     //中文名称
	Ename     string `p:"ename"`     //英文名称
	Method    string `p:"method"`    //调用方法
	TableName string `p:"tableName"` //调用主表名
	BeginTime string `p:"beginTime"` //开始时间
	EndTime   string `p:"endTime"`   //结束时间
	PageNum   int    `p:"pageNum"`   //当前页码
	PageSize  int    `p:"pageSize"`  //每页数
}

type EditTableJoin struct {
	Id         uint64
	TableJoins []*TableJoin `p:"tableJoins" `
}
type EditTableWhereBy struct {
	Id       uint64
	WhereBys []*WhereBy `p:"whereBys" `
}
type EditTableOrderBy struct {
	Id       uint64
	OrderBys []*OrderBy `p:"orderBys" `
}
type EditTableFieldBy struct {
	Id       uint64
	FieldBys []*FieldBy `p:"fieldBys" `
}

type EditTableGroupBy struct {
	Id       uint64
	GroupBys []*GroupBy `p:"groupBys" `
}

type TableJoin struct {
	TableName1 string `json:"tableName1"` // 本表名 `orm:"tableName1"  json:"tableName1"`
	TableName2 string `json:"tableName2"` // 副表名称
	JoinWays   string `json:"joinWays"`   // 关联方式,left,right,inner
	Field1     string `json:"field1"`     // 本表关联字段
	Field2     string `json:"field2"`     // 副表关联字段
}

type WhereBy struct {
	TableName  string `orm:"table_name"  json:"tableName"`  // 查询表名
	Field      string `orm:"field"       json:"field"`      // 查询字段
	Ways       string `orm:"ways"        json:"ways"`       // 查询条件:is,in,...
	Params     string `orm:"params"      json:"params"`     // 查询参数
	Auth       bool   `json:"auth"`                         //是否权限字段
	ParamsType string `orm:"params_type" json:"paramsType"` // 参数类型
	Comment    string `orm:"comment"    json:"comment"`     // 字段列描述
	Rule       string `json:"rule"`                         //验证规则
	ErrMsg     string `json:"errMsg"`                       //错误提示
	Value      interface{}
}
type OrderBy struct {
	OrderTable string `orm:"order_table" json:"orderTable"`     // 查询表
	OrderField string `orm:"order_field"     json:"orderField"` // 字段
	Sort       string `orm:"sort"       json:"sort"`            // 排序 asc desc
}

type GroupBy struct {
	GroupTable string `orm:"group_table" json:"groupTable"`     // 表名称
	GroupField string `orm:"group_field"     json:"groupField"` // 字段名称
}

type FieldBy struct {
	FieldTable string `orm:"field_table" json:"fieldTable"` // 表名称
	Fields     string `orm:"fields"     json:"fields"`      // 表字段
	FieldAs    string `orm:"field_as"   json:"fieldAs"`     // 字段别名
	ParamsType string `orm:"params_type" json:"paramsType"` // 参数类型
	Comment    string `orm:"comment"    json:"comment"`     // 字段列描述
	Rule       string `json:"rule"`                         //验证规则
	ErrMsg     string `json:"errMsg"`                       //错误提示
}
